package d2_xml;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.ArrayList;
import java.util.List;

public class Demo4JTest02 {
    public static void main(String[] args) throws Exception {
        //目标: 解析XML文件, 使用Dome4J框架
        //需求将XML文件中的数据封装到一个对象中去,然后存到集合中
        //1、创建一SaxReader解析器对象
        SAXReader saxReader = new SAXReader();


        //2、把XML文件对读成一个Documents
        Document document = saxReader.read
                (
                        "javapromax\\" +
                                "day11-speical" +
                                "-file-log-cod" +
                                "e\\src\\Co" +
                                "ntact.xml");

        //3、文档对象中包含了XML的全部数据, 提供了方法获取数据
        Element rootElement = document.getRootElement();

        //4、获取去跟根目录下的Contact的全部子类对象
        List<Element> contactElements = rootElement.elements("contact");//注意标签名的匹配

        //5、创建集合进行存储对象数据,类型是Contact
        List<Contact> contacts = new ArrayList<>();

        //6、遍历每一个的根目录下Contact的全部子类
        for (Element contactElement : contactElements) {
            //7、创建Contact对象
            Contact contact = new Contact();
            //8、获取相应的数据封装到对象中去
            contact.setId(Integer.parseInt(contactElement.attributeValue("id")));//这个直接转到,不用子啊拆箱
            contact.setName(contactElement.element("name").getTextTrim());
            contact.setSex(contactElement.element("gender").getTextTrim().charAt(0));
            contact.setEmail(contactElement.element("email").getTextTrim());

            //9、将封装好的对象存到集合中去
            contacts.add(contact);
        }
        //10、便利集合展示结构
        contacts.forEach(System.out::println);
        System.out.println("--------------------------------------------------");

        //或者直接进行打印
        System.out.println(contacts);
    }
}
